home *** CD-ROM | disk | FTP | other *** search
- MODULE SelectScreen;
-
- IMPORT
- e:Exec,
- d:Dos,
- I:Intuition,
- str:Strings,
- y:SYSTEM,
- g:Graphics;
-
- TYPE MStr=ARRAY 90 OF CHAR;
-
- VAR wnd:I.WindowPtr;
- NList:ARRAY 50 OF MStr;
- SList:ARRAY 50 OF I.ScreenPtr;
- Sel,siz,LLen:INTEGER;
- SelS:I.ScreenPtr;
- TxtF:g.TextFontPtr;
-
- CONST VersionString="$VER: HotScreen by HDS 1994 ";
- PROCEDURE GetList;
- VAR scr:I.ScreenPtr;
- BEGIN;
- LLen:=0;
- scr:=I.base.activeScreen;
- SelS:=scr;
- WHILE scr#NIL DO
- INC(LLen);
- NList[LLen]:="No Name !";
- IF scr.title#NIL THEN
- str.Cut(scr.title^,0,str.Length(scr.title^),NList[LLen]);
- IF str.Length(NList[LLen])>30 THEN
- str.Cut(scr.title^,0,30,NList[LLen]);
- END;END;
- SList[LLen]:=scr;
- scr:=scr.nextScreen;Sel:=1;
- END;
- END GetList;
-
- PROCEDURE InitWindow;
- VAR nwn:I.NewWindow;
- h,w:INTEGER;
- BEGIN;
- nwn:=I.NewWindow(0,0,10,10,1,1,LONGSET{I.rawKey},
- LONGSET{I.activate},NIL,NIL,NIL,NIL,NIL,0,0,400,400,I.customScreen);
- nwn.screen:=SList[1];
- siz:=nwn.screen.font.ySize+2;
- nwn.topEdge:=(SList[1].height-h)DIV 2;
- nwn.leftEdge:=(SList[1].width-28*siz) DIV 2;
- nwn.height:=10;nwn.width:=10;
- wnd:=I.OpenWindow(nwn);
- w:=g.TextLength(wnd.rPort,VersionString,32);
- siz:=wnd.iFont.ySize;
- h:=siz*LLen+siz;
- I.SizeWindow(wnd,w-10,h-10);
- d.Delay(10);
- END InitWindow;
-
- PROCEDURE DrawList;
- VAR n:INTEGER;
- BEGIN;
- FOR n:=1 TO LLen DO
- g.SetAPen(wnd.rPort,1);
- g.SetBPen(wnd.rPort,0);
- IF Sel=n THEN
- g.SetAPen(wnd.rPort,0);
- g.SetBPen(wnd.rPort,1);END;
- g.Move(wnd.rPort,8,siz*n+2);
- g.Text(wnd.rPort,NList[n],str.Length(NList[n]));
- END;
- END DrawList;
-
-
- PROCEDURE MainLoop;
- VAR im:I.IntuiMessagePtr;
- ende:BOOLEAN;
- BEGIN;
- ende:=FALSE;
- REPEAT;
- im:=e.GetMsg(wnd.userPort);
- IF im#NIL THEN
- IF im.code=77 THEN INC(Sel);IF Sel>LLen THEN Sel:=1;END;DrawList;END;
- IF im.code=76 THEN DEC(Sel);IF Sel<1 THEN Sel:=LLen;END;DrawList;END;
- IF im.code=69 THEN ende:=TRUE;END;
- IF im.code=68 THEN ende:=TRUE;SelS:=SList[Sel];END;
- e.ReplyMsg(im);
- END;
- UNTIL ende;
- END MainLoop;
-
- PROCEDURE DoIt*;
- BEGIN;
- GetList;
- InitWindow;
- DrawList;
- MainLoop;
- I.CloseWindow(wnd);
- I.ScreenToFront(SelS);
- END DoIt;
-
- END SelectScreen.
-
-
-
-